/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package carrancao.repositorio;

import carrancao.conexao.HibernateUtil;
import carrancao.entidades.ProdutoHasItemProduto;
import carrancao.entidades.ProdutoHasItemProdutoId;
import org.hibernate.Hibernate;
import org.hibernate.SQLQuery;
import org.hibernate.Session;
import org.hibernate.Transaction;

/**
 *
 * @author Lubnnia
 */
public class ProdutoHasItemProdutoRepositorio {

    public ProdutoHasItemProdutoRepositorio() {

    }

    public void cadastrarProdutoHasItemProduto(ProdutoHasItemProduto produto_item) {

        Session session = HibernateUtil.getSessionFactory().openSession();

        Transaction trans = session.beginTransaction();

        trans.begin();
        session.save(produto_item);
        trans.commit();
        session.close();
    }

    public void deletarProdutoHasItemProduto(ProdutoHasItemProduto produto_item) {

        Session session = HibernateUtil.getSessionFactory().openSession();

        Transaction trans = session.beginTransaction();

        trans.begin();
        session.delete(produto_item);
        trans.commit();
        session.close();
    }

    public void alterarProdutoHasItemProduto(ProdutoHasItemProduto produto_item) {

       Session session = HibernateUtil.getSessionFactory().openSession();

       Transaction trans = session.beginTransaction();

       ProdutoHasItemProdutoId phiId = new ProdutoHasItemProdutoId();
       phiId.setProdutoIdproduto(produto_item.getProduto().getIdproduto());
       phiId.setItem_produtoIditem_produto(produto_item.getItemProduto().getIditemProduto());

       ProdutoHasItemProduto produto_hasItemProduto = new ProdutoHasItemProduto();
       produto_hasItemProduto.setId(phiId);

       produto_item.setId(produto_hasItemProduto.getId());

       session.update(produto_item);
       trans.commit();
       session.close();

    }

    public ProdutoHasItemProduto pesquisarProdutoHasItemProdutoPorID(int idProduto, int idItem) {

       Session session = HibernateUtil.getSessionFactory().openSession();

       ProdutoHasItemProduto produto_itemproduto = null;

       SQLQuery query = session.createSQLQuery("SELECT produto_has_item_produto.* FROM produto_has_item_produto" +
               " WHERE produto_has_item_produto.produto_idproduto = '" + idProduto + "' AND produto_has_item_produto.item_produto_iditem_produto = '" + idItem + "'");

       query.addEntity("produto_has_item_produto", ProdutoHasItemProduto.class);

       if(query.list().size() > 0) {
           produto_itemproduto = (ProdutoHasItemProduto) query.list().get(0);
           ProdutoHasItemProdutoRepositorio.initialize(produto_itemproduto);
       }

       session.close();

       return produto_itemproduto;

    }

    public static void initialize(ProdutoHasItemProduto phi){
           Hibernate.initialize(phi);
           Hibernate.initialize(phi.getItemProduto());
           Hibernate.initialize(phi.getProduto());
    }

    public void getInitialize(ProdutoHasItemProduto phi) {
        this.initialize(phi);
    }

    
}
